沒看過鯨魚騎腳踏車嗎? 進入開發環節~衝啊~
等等... 好像要先來個前置作業...
圖片來源:Docker (@Docker) / Twitter
今天就來用 GitLab 做一下開發前置~
開發前置設定流程:
先使用 Admin 手動註冊 User (也可以讓 User 自己註冊)
使用 Admin 登入切換至 Admin 頁面
新增 User
輸入完資料完成 User 註冊
接下來就以 User 的角度來設定專案~
使用 User 登入
先建立一個 Group
在 Group 下建立 Project
GitLab 可以使用 SSH 連線,但目前設定的 Ingress 只能走 HTTP(80)/HTTPS(443)
所以需要再回頭改 Traefik 設定...
要再新增 Traefik 的轉送通道,給 SSH 使用 (預設 port 22)
注意! 以下設定會佔用 22 port,需要有額外的 IP
(如果沒有多的 IP 可以選擇修改 exposedPort,讓 SSH 通道走不同的 port)
完整檔案放在 github Day 23 - traefik/values.yaml
ports:
ssh:
expose: true
exposedPort: 22
port: 2222
protocol: TCP
service:
externalIPs:
- 10.1.0.6
...
設定 SSH 通道目標指向 service gitlab-shell
這裡要使用 Traefik 的 Custom Resource IngressRouteTCP
進行設定
Day 23 - gitlab/traefik-gitlab-shell.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRouteTCP
metadata:
labels:
environment: production
method: traefik
name: gitlab-gitlab-shell
namespace: gitlab
spec:
entryPoints:
- ssh
routes:
- match: HostSNI(`*`)
services:
- name: gitlab-gitlab-shell
port: 22
HostSNI
似乎沒辦法限定指向 host gitlab,所以這個通道只能連到 gitlab-shell
接下來要開發先設定 SSH key 才能推送專案到 GitLab
在本機建立新的 SSH key 可以使用 -C
tag key
$ ssh-keygen -t rsa -C "test"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/user/.ssh/id_rsa): /Users/user/.ssh/test
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in test
Your public key has been saved in test.pub
The key fingerprint is:
SHA256:+6vrV6VY9m1MJXSPbC+Gqe2UshtQF6NWFJDW3Pvh0G8 test
The key's randomart image is:
+---[RSA 3072]----+
| .**+. .|
...
...
| ..* |
| .++=o. |
+----[SHA256]-----+
將 Public Key 新增到 GitLab
cat /Users/user/.ssh/test.pub
使用 ssh -T
指令測試與 GitLab 的連線
ssh -T -i ~/.ssh/test git@harbor.example.domain.com
一開始會先請求允許 fingerprint
The authenticity of host 'gitlab.example.domain.com (10.1.0.6)' can't be established.
ED25519 key fingerprint is SHA256:X2pa/SjDm6MxfbwF62adRvHarkZEiGsVQHSboNNVZ0M.
This host key is known by the following other names/addresses:
~/.ssh/known_hosts:31: 10.1.0.6
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitlab.example.domain.com' (ED25519) to the list of known hosts.
PTY allocation request failed on channel 0
連線成功會顯示 @user
名稱
Welcome to GitLab, @test!
將 SSH key 匯入管理
sudo ssh-add ~/.ssh/test
設定 SSH config
開啟 ~/.ssh/config
設定 HostName 及 IdentityFile
Host gitlab.example
HostName gitlab.example.domain.com
IdentityFile ~/.ssh/test
連線設定完之後就能使用 ssh 連線 clone 專案~
git clone git@gitlab.example.domain.com:test-web/frontend.git
正複製到 'frontend'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
接收物件中: 100% (3/3), 完成.
成功~
我以為今天能開始跑開發,結果沒想到還要回頭設定 ssh 連線
中間還不小心把 ssh port 搶走,還好還有其他 ip 可以連回去... 嚇死我了...